#include <stdio.h>
// 如果已经确认程序没有问题，不需要再做断言，就在#include <assert.h>语句的前面，定义一个宏NDEBUG。
// #define NDEBUG
#include <assert.h>

// 注意，static_assert()只在编译阶段运行，无法获得变量的值。如果对变量进行静态断言，就会导致编译错误。
// static_assert()不管函数是否执行，都会进行断言判断。最后，static_assert()不会生成可执行代码，所以不会造成任何运行时的性能损失。
int somefunc()
{
    static_assert(sizeof(int) == 4, "4-bit code generation is not supported.");
    return 0;
}

int main()
{
    int PI = 2;
    assert(PI > 3);
    return 0;
}